import {ElMapExportTable} from "table-excel";
import {changeDateFormat} from "@/utils/time.js";

/**
 * 清洗列表中多余的字段
 * @description 简单清洗多余的数据
 * @author 青姝 2224693191@qq.com
 * @param data 清洗的表头
 * @returns {*} 只取title和dataIndex
 */
function wash(data) {
  return data.filter(item => {
    if (item.dataIndex !== "Operate") {
      return {
        title: item.title,
        dataIndex: item.dataIndex,
      };
    }
  });
}

/**
 * 统一格式化化时间
 * @description 格式化时间格式：YYYY-MM-DD HH:MM:SS
 * @author 青姝 2224693191@qq.com
 * @param data 数据
 * @returns {*}
 */
function formatTime(data) {
  return data.map(item => {
    for (let attr in item) {
      if (attr.indexOf("Time") !== -1) {
        item[attr] = changeDateFormat(item[attr]);
      }
      if (attr === "State") {
        if (item[attr] === 0) {
          item[attr] = "草稿";
        } else if (item[attr] === 10) {
          item[attr] = "审核中";
        } else if (item[attr] === 20) {
          item[attr] = "作废/删除";
        } else {
          item[attr] = "审核通过";
        }
      }
    }
    return item;
  });
}

/**
 * 导出正常表格到 Excel
 * @description 导出正常表格到 Excel
 * @author 青姝 2224693191@qq.com
 * @param name 表名
 * @param column 表头
 * @param data 数据
 * @returns {{style: {font: {bold: boolean}}}} 字体样式
 */
export const induce = (name, column, data) => {
  const columns = wash(column);
  const result = formatTime(data);
  const instance = new ElMapExportTable(
    {
      column: columns,
      data: result,
      sheetName: name, // sheet名称
      setRowStyle: ({data, columnIndex, rowIndex, type}) => {
        if (type === "header") {
          return {
            height: 20,
            font: {size: 13.5, bold: true},
          }
        }
      },
    },
    {
      indentSize: 1, // 默认是1,可自行调整
    }
  );
  instance.download(name);
};
